// 直接测试前端请求链的完整流程
import axios from 'axios';

// 模拟前端的axios实例配置
const testAxios = axios.create({
  baseURL: '',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
});

// 模拟前端的响应拦截器
const setupTestInterceptors = () => {
  testAxios.interceptors.response.use(
    (response) => {
      console.log('拦截器收到响应，URL:', response.config.url);
      console.log('拦截器响应数据:', response.data);
      
      const res = response.data;
      const url = response.config.url || '';
      
      if (res === undefined || res === null) {
        console.error('拦截器发现响应数据为空');
        return { error: '响应数据为空' };
      }
      
      if (url.includes('/auth/token')) {
        console.log('拦截器处理登录接口响应');
        return res;
      }
      
      return res;
    },
    (error) => {
      console.error('拦截器捕获到错误:', error);
      return Promise.reject(error);
    }
  );
};

// 模拟前端的post方法
const testPost = async (url, data, config) => {
  console.log('testPost方法调用，URL:', url);
  
  try {
    const response = await testAxios.post(url, data, config);
    console.log('testPost收到响应数据:', response);
    console.log('testPost响应数据类型:', typeof response);
    return response;
  } catch (error) {
    console.error('testPost请求失败:', error);
    throw error;
  }
};

// 完整的登录测试流程
const testLoginFlow = async () => {
  try {
    console.log('=== 开始完整登录流程测试 ===');
    
    // 1. 设置拦截器
    setupTestInterceptors();
    
    // 2. 准备登录参数
    const params = new URLSearchParams();
    params.append('username', 'admin');
    params.append('password', 'abc@123456');
    
    console.log('登录参数:', params.toString());
    
    // 3. 发送登录请求 - 只使用完整URL
    console.log('\n测试完整URL: http://localhost:5176/api/auth/token');
    const result = await testPost('http://localhost:5176/api/auth/token', params, {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    });
    
    console.log('\n=== 测试完成 ===');
    console.log('登录测试结果:', result);
    console.log('登录测试结果类型:', typeof result);
    if (typeof result === 'object') {
      console.log('登录测试结果包含的字段:', Object.keys(result));
    }
    
  } catch (error) {
    console.error('测试过程中发生错误:', error);
    if (error.response) {
      console.error('错误响应状态码:', error.response.status);
      console.error('错误响应数据:', error.response.data);
    }
  }
};

// 运行测试
console.log('准备运行登录流程测试...');
testLoginFlow();
console.log('测试脚本已启动，请查看输出...');